package services

import (
	"fmt"

	"github.com/sirupsen/logrus"
)

// topic:{MAC}/up
func DealMessage(topic string, payload []byte) error {
	// 校验主题合法性
	mac, err := checkTopic(topic)
	if err != nil {
		return err
	}
	logrus.Info("mac:", mac)
	// 初始化设备数据
	var deviceData DeviceData
	err = deviceData.InitDeviceData(payload, mac)
	if err != nil {
		return err
	}
	// 发送数据到平台
	err = deviceData.SendDataToPlatform()
	if err != nil {
		return err
	}
	return nil
}

// 校验主题合法性并返回MAC地址
func checkTopic(topic string) (string, error) {
	// topic:{MAC}/up
	if len(topic) <= 3 {
		return "", fmt.Errorf("topic:%s is invalid", topic)
	}
	// 最后三个字符必须是"/up"
	if topic[len(topic)-3:] != "/up" {
		return "", fmt.Errorf("topic:%s is invalid", topic)
	}
	// MAC地址
	return topic[:len(topic)-3], nil

}
